home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_a
/
dskctr.atr
< prev
next >
Wrap
Text File
|
1995-04-22
|
3KB
|
103 lines
100 REM <<< PERCOM DISK CONTROL >>>
105 REM <<< SAMPLE PROGRAM >>>
110 REM REVISED TO WORK W/2 DRIVE SYS.
120 DIM BUF$(12):REM OPTION TABLE
125 DIM R$(1):REM RESPONSES GO HERE
130 Z=ADR(" ")
140 DATA 104,76,89,228
150 FOR I=0 TO 3
160 READ X
170 POKE Z+I,X
180 NEXT I
190 DCB=768
200 DATA 49,1,78,64,0,0,1,0,12,0,1,0
210 REM DEVICE,UNIT,COMMAND,STATUS(DIR),
220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR
230 FOR I=0 TO 11:REM BUILD THE DCB
240 READ X
250 POKE DCB+I,X
260 NEXT I
270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS
280 X=INT(A/256)
290 POKE DCB+5,X
300 POKE DCB+4,A-X*256
301 SETCOLOR 4,9,4:? "}":? :?
302 PRINT "DRIVE NUMBER";:INPUT I
304 POKE DCB+1,I:REM SET DRIVE IN DCB
310 X=USR(Z):REM READ THE OPTION TABLE
320 PRINT "DRIVE NUMBER OF TRACKS=";PEEK(A)
330 PRINT "DRIVE STEP RATE CODE=";PEEK(A+1)
340 PRINT "DRIVE SECTORS/TRACK=";PEEK(A+3)
350 PRINT PEEK(A+4)+1;" SIDED DRIVE"
360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380
370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY"
380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR"
390 PRINT
400 PRINT "Make it single (S) or double (D)"
410 PRINT " density";:INPUT R$
420 IF ASC(R$)=ASC("D") THEN 470
430 POKE A+5,0:REM MAKE SINGLE DENSITY
440 POKE A+6,0
450 POKE A+7,128
455 POKE 4880+I,1:REM PATCH TO CTRL D2
460 GOTO 500
470 POKE A+5,4:REM MAKE DOUBLE DENSITY
480 POKE A+6,1
490 POKE A+7,0
495 POKE 4880+I,2:REM PATCH TO CTRL D2
500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE
510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION)
520 X=USR(Z):REM UPDATE DRIVE OPTIONS
530 END
100 REM <<< PERCOM DISK CONTROL >>>
105 REM <<< SAMPLE PROGRAM >>>
110 REM REVISED TO WORK W/2 DRIVE SYS.
120 DIM BUF$(12):REM OPTION TABLE
125 DIM R$(1):REM RESPONSES GO HERE
130 Z=ADR(" ")
140 DATA 104,76,89,228
150 FOR I=0 TO 3
160 READ X
170 POKE Z+I,X
180 NEXT I
190 DCB=768
200 DATA 49,1,78,64,0,0,1,0,12,0,1,0
210 REM DEVICE,UNIT,COMMAND,STATUS(DIR),
220 REM BUFFER ADDR,TIMEOUT,SECTOR ADDR
230 FOR I=0 TO 11:REM BUILD THE DCB
240 READ X
250 POKE DCB+I,X
260 NEXT I
270 A=ADR(BUF$):REM INSERT BUFFER ADDRESS
280 X=INT(A/256)
290 POKE DCB+5,X
300 POKE DCB+4,A-X*256
301 SETCOLOR 4,9,4:? "}":? :?
302 PRINT "DRIVE NUMBER";:INPUT I
304 POKE DCB+1,I:REM SET DRIVE IN DCB
310 X=USR(Z):REM READ THE OPTION TABLE
320 PRINT "DRIVE NUMBER OF TRACKS=";PEEK(A)
330 PRINT "DRIVE STEP RATE CODE=";PEEK(A+1)
340 PRINT "DRIVE SECTORS/TRACK=";PEEK(A+3)
350 PRINT PEEK(A+4)+1;" SIDED DRIVE"
360 IF PEEK(A+5)=0 THEN PRINT "SINGLE DENSITY":GOTO 380
370 IF PEEK(A+5)=4 THEN PRINT "DOUBLE DENSITY"
380 PRINT PEEK(A+6)*256+PEEK(A+7);" BYTES/SECTOR"
390 PRINT
400 PRINT "Make it single (S) or double (D)"
410 PRINT " density";:INPUT R$
420 IF ASC(R$)=ASC("D") THEN 470
430 POKE A+5,0:REM MAKE SINGLE DENSITY
440 POKE A+6,0
450 POKE A+7,128
455 POKE 4880+I,1:REM PATCH TO CTRL D2
460 GOTO 500
470 POKE A+5,4:REM MAKE DOUBLE DENSITY
480 POKE A+6,1
490 POKE A+7,0
495 POKE 4880+I,2:REM PATCH TO CTRL D2
500 POKE DCB+3,128:REM SET DIRECTION FOR WRITE
510 POKE DCB+2,79:REM SET COMMAND (WRITE OPTION)
520 X=USR(Z):REM UPDATE DRIVE OPTIONS
530 END